package cn.edu.nju.software.greencreditsystem.DAO;

import cn.edu.nju.software.greencreditsystem.domain.RepaymentRecord;
import java.awt.image.BufferedImage;
import java.sql.Date;
import java.util.List;

/**
 * 作者：何启睿
 * 创建时间：2011-8-7
 * 类描述：Repayment类DAO接口
 */
public interface RepaymentRecordDAO
{
    public boolean save(RepaymentRecord rr);
    public boolean delete(RepaymentRecord rr);
    public RepaymentRecord getById(int id);
    public boolean update(RepaymentRecord rr);
    
    /**
     * 方法描述：获得指定企业的所有还贷记录
     * param：企业
     * return：还贷记录（按时间升序排列）
    */
    public List<RepaymentRecord> getByEnterprise(int enterpriseID);
    
    /**
     * 方法描述：执行还贷操作
     * param：还贷企业，还贷数额，还贷时间
     * return：操作是否成功
    */
    public boolean repay(int enterpriseID, Date planDate, Date realDate);
    
    /**
     * 方法描述：获取指定企业在指定时间之前的还贷总额(*当参数2为null时返回企业计划还贷总额)
     * param：企业，时间
     * return：计划还贷总额
    */
    public double getTotal(int enterpriseID, Date date);
    
    /**
     * 方法描述：获取指定企业在指定时间之前的还贷总额(*当参数2为null时返回企业实际还贷总额)
     * param：企业，时间
     * return：实际还贷总额
    */
    public double getPaid(int enterpriseID, Date date);
    
    /**
     * 方法描述：获取指定企业下一个未还的计划还贷记录
     * param：企业
     * return：还贷记录
    */
    public RepaymentRecord getNextUnpaid(int enterpriseID);
    
    /**
     * 方法描述：删除指定企业的所有还贷记录
     * param：企业id
     * return：操作是否成功
    */
    public boolean deleteAllById(int enterpriseID);
    
    /**
     * 方法描述：获得表示指定企业还贷情况的柱状图，以指定的宽和高
     * param：企业，宽度，高度
     * return：存有柱状图的BufferedImage对象
    */
    public BufferedImage drawImage(int enterpriseID, int width, int height);

    /**
     * 方法描述：获得表示指定企业还贷情况的柱状图，以默认的宽和高(600/380)
     * param：企业，宽度，高度
     * return：存有柱状图的BufferedImage对象
    */
    public BufferedImage drawImage(int enterpriseID);
}